package com.ttbj.api.costsharing;


import java.util.List;

import com.ttbj.api.dto.CostSharingDto;
import com.ttbj.api.dto.CutPayCostDto;
import com.ttbj.api.dto.Page;
import com.ttbj.api.exception.BusinessException;



public interface CostSharingService {
	
	/**
	 * 分页，条件查询分账信息
	 * @costSharing 分成信息 
	 * @page 
	 * @return
	 * @throws BusinessException
	 */
	public List<CostSharingDto> findCostSharingInfoByPage(CostSharingDto costSharing, Page page) throws BusinessException;
	
	/**
	 * 分页，条件查询分账信息数量
	 * @param costSharing
	 * @return
	 * @throws BusinessException
	 */
	public Integer findCostSharingInfoByPageCount(CostSharingDto costSharing) throws BusinessException;
	
	/**
	 * 通过支付订单号查询每一个分账的信息
	 * @param paymentOrderNo 支付订单号
	 * @return 每一个分账信息
	 * @throws BusinessException
	 */
	public List<CutPayCostDto> findEveryLastCutPayInfo(String paymentOrderNo, Page page) throws BusinessException;
	
	/**
	 * 添加分成信息
	 * @param costSharingDto 分成配置信息
	 * @throws BusinessException
	 */
	public void addCostSharingInfo(CostSharingDto costSharingDto) throws BusinessException;
	
	/**
	 * 批量处理分账撤销
	 * @param costSharingDtos 分账撤销需要用到的信息
	 * @param paymentOrderNo 支付订单号
	 * @throws BusinessException
	 */
	public void batchCpRevoke(List<CutPayCostDto> cutPayCostDtos, String paymentOrderNo) throws Exception;
	
	/**
	 * 通过分账订单号（外部系统）更新状态值
	 * @param status 状态值
	 * @param transNo 分账订单号（外部系统）
	 * @throws BusinessException
	 */
	public void editCutPayCostStatus(String status, String transNo) throws BusinessException;
	
	/**
	 * 查询 天/月 分成统计
	 * @param format 天或者月的格式
	 * @param startDate 开始时间
	 * @param endDate 结束时间
	 * @param type 类型：1为短运，2为长运
	 * @return
	 * @throws BusinessException
	 */
	public List<CostSharingDto> findCostSharingDayOrMonthStatistics(String format, String startDate, 
								String endDate, Integer type) throws BusinessException;
}
